package com.zeratul.common.satoken.enums;

import com.zeratul.common.core.exception.ServiceException;
import com.zeratul.common.satoken.codes.AuthResultCodes;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 用户类型
 */
@Getter
@AllArgsConstructor
public enum UserType {

    /**
     * 游客
     */
    GUEST("guest"),

    /**
     * 后台系统用户
     */
    SYS_USER("sys_user"),

    /**
     * 普通用户
     */
    USER("user"),

    /**
     * 设备用户
     */
    DEVICE("device"),

    /**
     * 第三方用户
     */
    OPEN_USER("open_user");

    /**
     * 用户标识
     */
    private String code;

    /**
     * 根据code查询用户类型对象
     */
    public static UserType getByCode(String code) {
        for (UserType userType : UserType.values()) {
            if (!userType.getCode().equals(code)) {
                continue;
            }
            return userType;
        }
        throw new ServiceException(AuthResultCodes.NOT_FOUND_USER_TYPE, "无效的用户类型：" + code);
    }

}
